/**
 * Created with IntelliJ IDEA.
 * Description:反射和设计模式
 * @反射
 * 在程序运行期间, 可以动态获取的类的信息, 实现创建类的对象, 或方法调用或属性, 这种动态实现的过程叫反射机制。
 * # Java提供的反射的类： .java ----> .class  类加载   ---->在运行时常量区记录类的信息(包,属性,方法...)
 *      * Class 类名 表示类的类(重要)
 *      * Filed 类名 表示属性的类
 *      * Method 类名 表示方法的类
 *      * Constructor 类名 表示构造的类
 * @Class类
 * 如何创建Class类的对象?
 *      *具体对象.getClass();
 *          Student s = new Student(); Class c = s.getClass(); c 包含student的信息
 *      *类名.class
 *          Class c = student.class;
 *      *Class.forName(String str); --> str:类的全路径信息
 * #常用方法
 *      Package getPackage(); 获取Class类的包
 *          *getPackage().getName();获取包名
 *      String getName(); 获取类名(全路径)
 *          *c.getName(); --> "com.reflect.Student"
 *      Class getSuperClass();获取父类
 *          *c.getSuperName().getName();获取父类名
 *      Class[] i = getInterfaces();
 *          *c.getInterfaces(); --->遍历数组中的类容
 *
 *      *创建对象
 *      Object newInstance(); --->创建具体类的对象, 调用无参构造，若没有无参构造则报错
 *      *获取方法
 *      Method[] getMethods(); --->获取所有public的方法, 包含继承过来的
 *      Method[] getDeclaredMethods(); --->获取所有的方法, 但不包含继承过来的
 *      Method getDeclaredMethod(); ---> 获取所有一个public的方法
 *      Method getDeclaredMethod(String str, T ....); --->获取所有一个public的方法
 * #Method的方法
 *      invoke(Object o, Object ...);让Method(public)方法执行， 第一个参数是对象
 *      method.setAccessible(true);破坏封装, 可以访问私有的
 *
 * @设计模式
 * 编程的套路~！
 * #常见的设计模式 ：单例设计模式 、工厂设计模式 、装饰设计模式 、 代理设计模式
 *      #单例设计模式 ：在程序运行过程中，一个类只允许创建一个对象！
 *          思路：饿汉式、懒汉式
 *              *饿汉式：私有化,不允许随机创建对象
 *              class Student{
 *                  //必须为static否则永远不会创建
 *                  private static Student student = new Student();
 *
 *                  private Student(){}
 *
 *                  public static Student getInstance(){
 *                      return student;
 *                  }
 *              }
 *
 *              *懒汉式
 *          功能：
 *          步骤：
 *
 * User: cp
 * Date: 2023-12-12
 * Time: 8:40
 */
public class TestDemo {
}
